nodeData = [];
listTree={
    load : function(treeId,where){
        var treeobj=  $("#"+treeId)
        var field= treeobj.attr("textField") ;//显示名称
        var url= treeobj.attr("url") ;//请求数据地址
        var idField= treeobj.attr("idField") ;//ID
        var pid= treeobj.attr("pid") ;//父ID
        var onNodeclick= treeobj.attr("onNodeclick") ;//单击事件
        //Demo
        loadTreeData(url,idField,pid,field,where,treeId,onNodeclick);
        $("body").on("mousedown",".layui-tree a cite",function(){
            $(".layui-tree a cite").css('color','black');
            $(this).css('color','red')
        });
    },
}

/**
 * 通过url加载数据
 * @param url 请求地址
 * @param id  数据ID
 * @param pid 父id
 * @param name 显示名称
 * @param name 显示名称
 * @param where 加载条件
 * @param treeId 树UI的DOM id
 * @param onNodeclick 单击事件方法
 */
function loadTreeData(url,id,pid,name,where,treeId,onNodeclick){
    ActHttpRequest(url, where, function (data) {
        if(data.OK=="OK"){
            nodeData=TreeReloadData(data,pid,id,name);
            layui.use(['tree', 'layer'], function(){
                var layer = layui.layer
                    ,$ = layui.jquery
                    ,form=layui.form;
                layui.tree({
                    elem: '#'+treeId //指定元素
                    ,target: '_blank' //是否新选项卡打开（比如节点返回href才有效）
                    ,click: function(item){ //点击节点回调
                        //layer.msg('当前节名称：'+ item.name + '<br>全部参数：'+ JSON.stringify(item));
                        eval(onNodeclick+'('+JSON.stringify(item).replace(/\"/g,"'")+');');
                    }
                    ,nodes: nodeData
                });

            });

        }else{
            layer.alert("数据加载出错，请检查url和条件！");
        }
    });
}


function TreeReloadData(data,pid,id,name){
    var listobj=[];
    var items={};
    var ids=[];
    for(var i=0;i<data.List.length;i++){
        var obj = data.List[i];
        var parentId="root"
        if(obj[pid] && obj[pid]!="" && obj[pid]!="0"){
            parentId = obj[pid]
        }
        var jo={
            "id" : obj[id],
            "name" : obj[name],
            "parentId" : parentId,
            "node": obj
        }
        ids.push(obj[id]);
        if(items[parentId]){
            items[parentId].push(jo);
        }else{
            items[parentId] = [];
            items[parentId].push(jo);
        }

    }

    var findRoot=[];
    for(var i=0; i<Object.keys(items).length;i++){
        var objId=Object.keys(items)[i];
        var isRoot=true;
        for(var a=0;a<ids.length;a++){
            if(ids[a]==objId){
                isRoot=false;
            }
        }
        if(isRoot){
            findRoot.push(objId);
        }
    }
    var objs=[];
    for (var a=0;a<findRoot.length;a++){
        var results=TreeFormatTree(items, findRoot[a]);
        if(results.length>1){
            if(objs.length>0){
                for(var j=0;j<results.length;j++){
                    objs.push(results[j]);
                }
            }else{
                objs=results;
            }
        }else{
            var resultStr = JSON.stringify(TreeFormatTree(items, findRoot[a]));
            objs.push(JSON.parse(resultStr.substring(1,resultStr.length-1)));
        }
    }

    return objs;
    /*var listobj=[];
    items={};
    var ids=[];
    for(var i=0;i<data.List.length;i++){
        var obj= data.List[i];
        var parentId="root"
        if(obj[pid] && obj[pid]!="" && obj[pid]!="0"){
            parentId=obj[pid]
        }
        var jo={
            "id" : obj[id],
            "name" : obj[name],
            "parentId" : parentId,
            "node": obj
        }
        ids.push(obj[id]);
        if(items[parentId]){
            items[parentId].push(jo);
        }else{
            items[parentId] = [];
            items[parentId].push(jo);
        }
    }
    var findRoot="root";
    if(!items["root"]){
        for(var i=0; i<Object.keys(items).length;i++){
            var objId=Object.keys(items)[i];
            var isRoot=true;
            for(var a=0;a<ids.length;a++){
                if(ids[a]==objId){
                    isRoot=false;
                }
            }
            if(isRoot){
                findRoot=objId
            }
            /!*if(items[obj].length==1){
                findRoot= obj
            }*!/
        }
    }

    return TreeFormatTree(items, findRoot);*/
}

/**
 * 递归每个节点
 */
function TreeFormatTree(items, parentId) {
    var result = [];
    if (!items[parentId]) {
        return result;
    }
    for (var i=0;i<items[parentId].length;i++){
        var t=items[parentId][i];
        t.children = TreeFormatTree(items, t.id)
        result.push(t);
    }
    return result;
}